package com.thread;

/**
 * Created by Administrator on 2018/5/29.
 * 先上一个场景：假如你突然想做饭，但是没有厨具，也没有食材。网上购买厨具比较方便，食材去超市买更放心。

 实现分析：在快递员送厨具的期间，我们肯定不会闲着，可以去超市买食材。所以，在主线程里面另起一个子线程去网购厨具。

 但是，子线程执行的结果是要返回厨具的，而run方法是没有返回值的
 */
public class CommonCook {

    public static void main(String[] args) {
        long startTime = System.currentTimeMillis();
        CommonCook cook = new CommonCook();
        //1、网购厨具
        OnlineShopping onlineShopping = cook.new OnlineShopping();
        onlineShopping.start();
        try {
            onlineShopping.join();  //保证厨具送到
            //1、购买食材
            Thread.currentThread().sleep(2000); //模拟购买食材时间
            Shicai shicai = cook.new Shicai();
            System.out.println("第二步：食材到位");
            System.out.println("第三步：开始做饭");
            cook(onlineShopping.chuju,shicai);
            System.out.println("总用用时" + (System.currentTimeMillis() - startTime) + "ms");
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    static void cook(Chuju chuju,Shicai shicai){

    }

    class OnlineShopping extends Thread{
        private Chuju chuju;
        @Override
        public void run() {
            System.out.println("第一步：下单");
            System.out.println("第一步：等待送货");
            try {
                Thread.currentThread().sleep(5000); //模拟送货时间
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("第一步：厨具送到");
            chuju = new Chuju();
        }
    }




    class Chuju{

    }

    class Shicai{

    }
}
